]> git.r.bdr.sh - rbdr/super-polarity/blobdiff - Super Polarity/ScreenManager.cs
Merge branch 'master' of github.com:benbeltran/super-polarity
[rbdr/super-polarity] / Super Polarity / ScreenManager.cs
diff --git a/Super Polarity/ScreenManager.cs b/Super Polarity/ScreenManager.cs
new file mode 100644 (file)
index 0000000..b88741b
--- /dev/null
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    static class ScreenManager
+    {
+        static Stack<Screen> Screens;
+        static SuperPolarity Game;
+
+        static ScreenManager()
+        {
+            Screens = new Stack<Screen>();
+        }
+
+        static public void Push(Screen screen)
+        {
+            if (Screens.Count > 0)
+            {
+                Screens.Peek().Active = false;
+            }
+
+            screen.LoadContent();
+            screen.Active = true;
+            Screens.Push(screen);
+        }
+
+        static public void Pop()
+        {
+            var screen = Screens.Pop();
+            screen.Active = false;
+            screen.CleanUp();
+            Screens.Peek().Active = true;
+        }
+
+        static public void Update(GameTime gameTime)
+        {
+            Screens.Peek().Update(gameTime);
+        }
+
+        static public void Draw(SpriteBatch spriteBatch)
+        {
+            Screens.Peek().Draw(spriteBatch);
+        }
+
+        internal static void SetGame(SuperPolarity game)
+        {
+            Game = game;
+        }
+    }
+}